/*
 * @Author: hrg
 * @Date: 2023-05-17 14:58:16
 * @LastEditTime: 2023-05-18 15:56:31
 * @FilePath: \study_go\study04\demo\main.go
 * @Description:结构体实例的创建
 */

package main

import "fmt"

// 定义结构体：将老师的各个属性放到结构体中统一管理
type Teacher struct {
	// 变量大写，外界可以访问
	Name   string
	Age    int
	School string
}

// 创建结构体的实例对象:方式1：
/* func main() {
	var hrg Teacher
	hrg.Name = "胡瑞光"
	hrg.Age = 22
	hrg.School = "家里蹲大学"
	fmt.Println(hrg)
} */

// 创建结构体的实例对象，方式2：
/* func main() {
	var t Teacher = Teacher{"胡瑞光", 32, "家里蹲大学"}
	fmt.Println(t)
} */

// 创建结构体实例对象，方式3：返回的是结构体指针
/* func main() {
	var t *Teacher = new(Teacher)
	// t是指针 t实际上指向的就是地址，应该给地址指向的对象的字段赋值，所以使用（*t）
	(*t).Name = "hrg"
	(*t).Age = 24
	// 也支持t.字段名,
	t.School = "hhhh"
	fmt.Println(*t)
}*/

// 创建结构体实例对象方式4，返回的是结构体指针
func main() {
	var t1 *Teacher = &Teacher{
		"hhh", 12, "dskj",
	}
	var t2 *Teacher = &Teacher{}
	(*t2).Name = "张三"
	t2.Age = 33
	t2.School = "EEEEEE"

	fmt.Println(*t1)
	fmt.Println(*t2)
}
